/*
 * Creado el 17/06/2013
 *
 * UtilitariosIcse.java
 * Con funciones para el manejo de objetos Nacar a objetos Java
 * 
 * @Autor Mario Zumaran M.
 * @Autor Jose Ventura A.
 * 
 * Indra Peru
 */
package icse;

import java.util.Iterator;
import atae.apli.contexto.AtaeSvCompositeDatoRegistro;
import atae.apli.contexto.AtaeSvCompositeDatoRegistroIndexado;
import atae.apli.contexto.AtaeSvDato;
import atae.thin.pres.AtaeSvPresentacionUtils;

public class UtilitariosIcse {

	public String[][] getArrayString(AtaeSvCompositeDatoRegistroIndexado lista,
			int nroCols, String[] nomCols) {
		Iterator valores = null, colNames = null;
		AtaeSvCompositeDatoRegistro reg_aux = null;
		AtaeSvDato dato = null, auxiliar;
		StringBuffer fila = new StringBuffer(), cabecera = new StringBuffer();
		int n = 0, j = 0, i = 0, index = 0;
		String columna = "";
		String[][] vacio = { { "", "" } };

		if (lista != null) {
			n = lista.getLongitud();
			String[][] listado = new String[n][];

			for (index = 0; index < lista.getLongitud(); index++) {
				reg_aux = (AtaeSvCompositeDatoRegistro) lista
						.getElemento(index);
				if (reg_aux != null) {
					valores = reg_aux.getElementos();
					colNames = reg_aux.getClaves();
					listado[index] = new String[nroCols];

					while (valores.hasNext()) {
						dato = (AtaeSvDato) valores.next();
						columna = (String) colNames.next();
						i = 0;
						for (i = 0; i < nomCols.length; i++) {
							if (columna.equals(nomCols[i])) {
								listado[index][i] = dato.getValor() == null ? ""
										: dato.getValor().trim();
							}
						}
					}
				}
			}
			return listado;

		}
		return vacio;
	}

	public String[][] getListOfDescriptora(String[][] descriptora,
			String codTabla) {
		int n = 0, j = 0;
		for (int i = 0; i < descriptora.length; i++) {
			if (codTabla.equals(descriptora[i][0])) {
				n++;
			}
		}

		String[][] combo = new String[n][2];

		for (int i = 0; i < descriptora.length; i++) {
			if (codTabla.equals(descriptora[i][0])) {
				combo[j][0] = descriptora[i][1];
				combo[j][1] = descriptora[i][2];
				System.out.println(combo[j][1] + ">>" + combo[j][1]);
				j++;
			}
		}
		return combo;
	}

	public AtaeSvCompositeDatoRegistroIndexado getListaNacar(
			String nombreListaNacar, AtaeSvPresentacionUtils utils) {
		AtaeSvCompositeDatoRegistroIndexado lista = null;
		AtaeSvDato dato = null, auxiliar;

		try {
			lista = (utils.getDatoContexto(nombreListaNacar) == null) ? null
					: (AtaeSvCompositeDatoRegistroIndexado) utils
							.getDatoContexto(nombreListaNacar);
		} catch (Exception e) {
			auxiliar = utils.getDatoContexto(nombreListaNacar);
			lista = utils.getFactoriaDatos().obtenerRegistroIndexado();
			if (auxiliar instanceof AtaeSvCompositeDatoRegistro)
				lista.addElemento(auxiliar);
		}

		return lista;
	}

	public String[][] getGrilla(int tamanioCuerpo, int tamanioCabecera,
			Object[] cuerpo) {
		int lasx = 0;
		String[][] grilla = null;
		if (tamanioCuerpo > -1) {
			String[][] array = null;
			grilla = new String[tamanioCuerpo][tamanioCabecera];
			for (int i = 0; i < tamanioCabecera; i++) {
				array = (String[][]) cuerpo[i];
				if (array != null) {
					for (int j = 0; j < tamanioCuerpo; j++) {
						grilla[j][lasx] = array[j][5];
					}
					lasx++;
				}
			}
		}
		return grilla;
	}

	public int getTamanioCabecera(String[][] datosCabecera) {
		return datosCabecera.length;
	}

	public int getTamanioCuerpo(Object[] cuerpo) {
		String[][] array = null;
		try {
			array = (String[][]) cuerpo[0];
			if (array == null || array[0][0].equals(""))
				return -1;
		} catch (Exception e) {
			return -1;
		}
		return (array != null) ? array.length : -1;
	}

}
